package capitulo2;

/********************************
 * Polimorfismo (Objetivo 5.2)
 *******************************/

interface Animatable {
	
	void animate();
	
}

class Bar{
	
	public void makeNoise(){
		System.out.println("Grrrrrrr Grrrrrr!!!");
	}
}

public class Tema11_Polim01 extends Bar implements Animatable {

		
	@Override
	public void animate() {
		System.out.println("Animate........");
		
	}
	
	public static void main(String[] args) {
		
		/*
		 * Asi ahora tenemos una clase "Benja09_Polim01" que pasa el test ES-UN para la clase 
		 * "Bar" y la interfaz Animatable. Esto significa que Benja09_Polim01 puede ser 
		 * tratada poliformicamente como una de las cuatro cosas que puede ser, 
		 * dependiendo del tipo de la variable de referencia:
		 *  - Un objeto
		 *  - Un Bar (desde el mismo momento que Benja09_Polim01 heredo Bar)
		 *  - Un Benja09_Polim01 (es lo que realmente es)
		 *  - Un Animatable (desde el momento en que Benja09_Polim01 implementa Animatable)
		 */

		Tema11_Polim01 bp = new Tema11_Polim01();
		Object o = bp;
		Bar bar = bp;
		Animatable anim = bp;
		
		
	}
	
	
}
